package ar.com.test.logic.componentes;

import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;

import ar.com.logic.components.Posiciones;

public class PosicionesUT {
	private Posiciones posiciones;
	private Integer size = new Integer(4);
	@Before
	public void setup(){
		posiciones = new Posiciones(size,false);
		
		
	}
	
	@Test
	public void evalurInicial(){
			
		Assert.assertEquals(0, posiciones.getDescartados().size());
		Assert.assertEquals(false, posiciones.hasPosicionUnica());
		Assert.assertEquals(size.intValue(), posiciones.getDisponibles().size());
	}
	
	@Test
	public void descartar(){
		posiciones.descartar(1);
		Assert.assertEquals(3,posiciones.getDisponibles().size());
		Assert.assertEquals(1, posiciones.getDescartados().size());
		Assert.assertEquals(false, posiciones.hasPosicionDisponible(1));
	}
	
	@Test
	public void descartarTodos(){
		posiciones.descartar();
		Assert.assertEquals(0,posiciones.getDisponibles().size());
		Assert.assertEquals(4, posiciones.getDescartados().size());
		Assert.assertEquals(false, posiciones.hasPosicionDisponible(1));
	}
	
	
	@Test
	public void posicionDisponible(){
		Assert.assertEquals(true, posiciones.hasPosicionDisponible(2));
	}
	
	@Test
	public void posicionDescartada(){
		Assert.assertEquals(false, posiciones.esDescartado(1));
		
	}
	
	@Test
	public void comprobarOrdenDisponibles(){
		posiciones.descartar(3);
		
		Assert.assertEquals(new Integer(1), posiciones.getDisponibles().get(0));
		Assert.assertEquals(new Integer(2), posiciones.getDisponibles().get(1));
		Assert.assertEquals(new Integer(4), posiciones.getDisponibles().get(2));
		
	}
	
	
}
